#include "user_gpio.h"

static int led_output_state = 0;

void gpio_config_init(void)
{
    gpio_config_t io_conf;
    io_conf.intr_type = GPIO_INTR_DISABLE;
    io_conf.mode = GPIO_MODE_INPUT;
    io_conf.pin_bit_mask = GPIO_INPUT_PIN_SEL;
    io_conf.pull_down_en = 0;
    io_conf.pull_up_en = 0;
    gpio_config(&io_conf);

    io_conf.mode = GPIO_MODE_OUTPUT;
    io_conf.pin_bit_mask = GPIO_OUTPUT_PIN_SEL;
    gpio_config(&io_conf);
}

uint32_t get_state(void)
{
    uint32_t state =  0x00;
    uint8_t yellow = gpio_get_level(GPIO_INPUT_YELLOW);
    uint8_t green =  gpio_get_level(GPIO_INPUT_GREEN);
    uint8_t red =  gpio_get_level(GPIO_INPUT_RED);
    uint8_t door = gpio_get_level(GPIO_INPUT_DOOR);
    uint8_t backup = gpio_get_level(GPIO_INPUT_BACKUP);
    state =  state  | (backup << 4) | (yellow << 3) | (green << 2) | (red << 1) | door;
    return state;
}

void led_switch(int isOn)
{
    led_output_state = isOn;
    gpio_set_level(GPIO_OUTPUT_LED,led_output_state);
}

void led_toggle(void)
{
    led_output_state ^= 1;
    gpio_set_level(GPIO_OUTPUT_LED,led_output_state);
}